#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>

enum HmiMode
{
    HmiMode_Invalid = -1,
    HmiMode_Interrupt_Helpnet = 0x8001,    // InterruptMode #1
    HmiMode_Interrupt_FMMultiplexVICSEmergencyInterrupt,    // InterruptMode #2
    HmiMode_Interrupt_RepearingDetermination,    // InterruptMode #3
    HmiMode_Interrupt_IPACaution,    // InterruptMode #4
    HmiMode_Interrupt_CooperativeInfrastructureCautionInterrupt,    // InterruptMode #5
    HmiMode_Interrupt_DrivabilityServiceDisplayCaution,    // InterruptMode #6
    HmiMode_Interrupt_ETCInformation,    // InterruptMode #7
    HmiMode_Interrupt_HFPhoneCallQuidance,    // InterruptMode #8
    HmiMode_Interrupt_HFIncomingCallGuidance,    // InterruptMode #9
    HmiMode_Interrupt_OperatorOperation,    // InterruptMode #10
    HmiMode_Interrupt_NAVStartupGuidance,    // InterruptMode #11
    HmiMode_Interrupt_DisplayStartupGuidance,    // InterruptMode #12
    HmiMode_Interrupt_TrafficGuidance,    // InterruptMode #13
    HmiMode_Interrupt_ClearanceSonarWarning,    // InterruptMode #14
    HmiMode_Interrupt_RouteGuidance,    // InterruptMode #15
    HmiMode_Interrupt_RearCamera,    // InterruptMode #16
    HmiMode_Interrupt_RearCameraCaution,    // InterruptMode #17
    HmiMode_Interrupt_EJECTOperation,    // InterruptMode #18
    HmiMode_Interrupt_ACOperation,    // InterruptMode #19
    HmiMode_Interrupt_AudioTOPScreen,    // InterruptMode #20
    HmiMode_Interrupt_RemoteMenuOperation,    // InterruptMode #21
    HmiMode_Interrupt_DestinationAssistGuidance,    // InterruptMode #22
    HmiMode_Interrupt_WeatherGuidance,    // InterruptMode #23
    HmiMode_Interrupt_DisplayClose,    // InterruptMode #24
    HmiMode_Interrupt_VoiceRecognitionDisplay,    // InterruptMode #25
    HmiMode_Interrupt_VoiceRecognitionNavi,    // InterruptMode #26
    HmiMode_Interrupt_WeatherRequestReadingOut,    // InterruptMode #27
    HmiMode_Interrupt_ETC20AttentionPrecautionInformationInterrupt,    // InterruptMode #28
    HmiMode_Interrupt_VehicleWarningDisplay,    // InterruptMode #29
    HmiMode_Interrupt_LowFuelWarning,    // InterruptMode #30
    HmiMode_Interrupt_StartupGuidance,    // InterruptMode #31
    HmiMode_Interrupt_CooperativeInfrastructureInterrupt,    // InterruptMode #32
    HmiMode_Interrupt_ReverseRunCaution,    // InterruptMode #33
    HmiMode_Interrupt_DrivabilityServiceDisplay,    // InterruptMode #34
    HmiMode_Interrupt_DSRCEmergencyInterrupt,    // InterruptMode #35
    HmiMode_Interrupt_VICSEmergencyInterrupt,    // InterruptMode #36
    HmiMode_Interrupt_RDSTMCEmergencyInterrupt,    // InterruptMode #37
    HmiMode_Interrupt_DSRCInterrupt,    // InterruptMode #38
    HmiMode_Interrupt_TrafficInformationGuidance,    // InterruptMode #39
    HmiMode_Interrupt_VICSInterrupt,    // InterruptMode #40
    HmiMode_Interrupt_NAVNotification,    // InterruptMode #41
    HmiMode_Interrupt_EstimatedStopTimeNotification,    // InterruptMode #42
    HmiMode_Interrupt_ApplicationDeliveryInterrupt1,    // InterruptMode #43
    HmiMode_Interrupt_GBOOKTrafficInformationGuidance,    // InterruptMode #44
    HmiMode_Interrupt_DSRCLongSentenceReadingOut,    // InterruptMode #45
    HmiMode_Interrupt_GBOOKGuidance,    // InterruptMode #46
    HmiMode_Interrupt_EuropeTelematicsInterrupt,    // InterruptMode #47
    HmiMode_Interrupt_MailReadingOut,    // InterruptMode #48
    HmiMode_Interrupt_XMStocksReadingOut,    // InterruptMode #49
    HmiMode_Interrupt_XMSportsReadingOut,    // InterruptMode #50
    HmiMode_Interrupt_ActionEntryReadingOut,    // InterruptMode #51
    HmiMode_Interrupt_LEXUSInsiderGuidance,    // InterruptMode #52
    HmiMode_Interrupt_MapUpdateGuidance,    // InterruptMode #53
    HmiMode_Interrupt_MapDifferentialUpdate,    // InterruptMode #54
    HmiMode_Interrupt_SystemNotification,    // InterruptMode #55
    HmiMode_Interrupt_MaintenanceGuidance,    // InterruptMode #56
    HmiMode_Interrupt_SoftwareUpdateNotification,    // InterruptMode #57
    HmiMode_Interrupt_RemoteServicesGuidance,    // InterruptMode #58
    HmiMode_Interrupt_RemoteServicesOperation,    // InterruptMode #59
    HmiMode_Interrupt_MailReceivingNotification,    // InterruptMode #60
    HmiMode_Interrupt_OperatorGuidacne,    // InterruptMode #61
    HmiMode_Interrupt_GraphicInformationProvision,    // InterruptMode #62
    HmiMode_Interrupt_CenterVoiceRecognition,    // InterruptMode #63
    HmiMode_Interrupt_GBOOKInformation,    // InterruptMode #64
    HmiMode_Interrupt_FullBrowserInterrupt,    // InterruptMode #65
    HmiMode_Interrupt_MirrorlinkIPhoneAppcombinationInterruptVoice,    // InterruptMode #66
    HmiMode_Interrupt_ApplicationDeliveryInterrupt2,    // InterruptMode #67
    HmiMode_Interrupt_UIEGuidance,    // InterruptMode #68
    HmiMode_Interrupt_IntentionConfirmationScreen,    // InterruptMode #69
    HmiMode_Interrupt_ExtInterruptScreenHF,    // InterruptMode #70
    HmiMode_Interrupt_ExtInterruptScreenOther,    // InterruptMode #71
    HmiMode_Interrupt_Security,    // InterruptMode #72
    HmiMode_Interrupt_SeatSetting,    // InterruptMode #73
    HmiMode_Interrupt_AttentionPointGuidanceHighPriority,    // InterruptMode #74
    HmiMode_Interrupt_AttentionPointGuidanceMiddlePriority,    // InterruptMode #75
    HmiMode_Interrupt_AttentionPointGuidanceLowPriority,    // InterruptMode #76
    HmiMode_Interrupt_SmartphoneLink,    // InterruptMode #77
    HmiMode_Interrupt_SeamlessGuidance,    // InterruptMode #78
    HmiMode_Interrupt_RecommendInfomationGuidanceHigh,    // InterruptMode #79
    HmiMode_Interrupt_RecommendInfomationGuidanceLow,    // InterruptMode #80
    HmiMode_Interrupt_RouteGuidanceSubScreen,    // InterruptMode #81
    HmiMode_Interrupt_ETC20AttentionPrecautionInformationInterruptSubScreen,    // InterruptMode #82
    HmiMode_Interrupt_ReverseRunCautionSubScreen,    // InterruptMode #83
    HmiMode_Interrupt_DSRCEmergencyInterruptSubScreen,    // InterruptMode #84
    HmiMode_Interrupt_VICSEmergencyInterruptSubScreen,    // InterruptMode #85
    HmiMode_Interrupt_DSRCInterruptSubScreen,    // InterruptMode #86
    HmiMode_Interrupt_TrafficInformationGuidanceSubScreen,    // InterruptMode #87
    HmiMode_Interrupt_VICSInterruptSubScreen,    // InterruptMode #88
    HmiMode_Interrupt_EstimatedStopTimeNotificationSubScreen,    // InterruptMode #89
    HmiMode_Interrupt_AttentionPointGuidanceHighPrioritySubScreen,    // InterruptMode #90
    HmiMode_Interrupt_AttentionPointGuidanceMiddlePrioritySubScreen,    // InterruptMode #91
    HmiMode_Interrupt_AttentionPointGuidanceLowPrioritySubScreen,    // InterruptMode #92
    HmiMode_Interrupt_DriveModeSelectSubScreen,    // InterruptMode #93
    HmiMode_Interrupt_AttentionPointGuidanceMddlePrioritySubScreen,    // InterruptMode #94
    HmiMode_Interrupt_HFPhoneCallGuidanceSubScreen,    // InterruptMode #95
    HmiMode_Interrupt_HFIncomingCallGuidanceSubScreen,    // InterruptMode #96
    HmiMode_Interrupt_OperatorOperationSubScreen,    // InterruptMode #97
    HmiMode_Interrupt_StatusScreen = 0xf001,
    HmiMode_Interrupt_MobileAssistant
};

int group_0[] = {
    HmiMode_Interrupt_Security,
    HmiMode_Interrupt_RearCamera,
    HmiMode_Interrupt_RearCameraCaution,
};

int group_1[] = {
    HmiMode_Interrupt_Helpnet,
    HmiMode_Interrupt_Helpnet,
};

int group_2[] = {
    HmiMode_Interrupt_FMMultiplexVICSEmergencyInterrupt,
    HmiMode_Interrupt_RepearingDetermination,
    HmiMode_Interrupt_IPACaution
};

int group_3[] = {
    HmiMode_Interrupt_CooperativeInfrastructureCautionInterrupt,
    HmiMode_Interrupt_DrivabilityServiceDisplayCaution,
    HmiMode_Interrupt_AttentionPointGuidanceHighPriority,
    HmiMode_Interrupt_ReverseRunCautionSubScreen
};

int group_4[] = {
    HmiMode_Interrupt_ETCInformation
};

int group_5[] = {
    HmiMode_Interrupt_HFPhoneCallQuidance,
    HmiMode_Interrupt_HFIncomingCallGuidance,
    HmiMode_Interrupt_OperatorOperation,
    HmiMode_Interrupt_NAVStartupGuidance,
    HmiMode_Interrupt_DisplayStartupGuidance,
    HmiMode_Interrupt_TrafficGuidance
};

int group_6[] = {
    HmiMode_Interrupt_ClearanceSonarWarning,
    HmiMode_Interrupt_RouteGuidance,
    HmiMode_Interrupt_EJECTOperation,
    HmiMode_Interrupt_ACOperation,
    HmiMode_Interrupt_AudioTOPScreen,
    HmiMode_Interrupt_RemoteMenuOperation,
    HmiMode_Interrupt_SeatSetting,
    HmiMode_Interrupt_DestinationAssistGuidance,
    HmiMode_Interrupt_WeatherGuidance,
    HmiMode_Interrupt_VoiceRecognitionDisplay,
    HmiMode_Interrupt_VoiceRecognitionNavi,
    HmiMode_Interrupt_CenterVoiceRecognition,
    HmiMode_Interrupt_MobileAssistant,
    HmiMode_Interrupt_WeatherRequestReadingOut
};

int group_7[] = {
    HmiMode_Interrupt_ETC20AttentionPrecautionInformationInterrupt,
};

int group_8[] = {
    HmiMode_Interrupt_LowFuelWarning,
    HmiMode_Interrupt_StartupGuidance
};

int group_9[] = {
    HmiMode_Interrupt_CooperativeInfrastructureInterrupt,
    HmiMode_Interrupt_DrivabilityServiceDisplay,
    HmiMode_Interrupt_AttentionPointGuidanceMiddlePriority,
    HmiMode_Interrupt_RecommendInfomationGuidanceHigh
};

int group_10[] = {
    HmiMode_Interrupt_DSRCEmergencyInterrupt,
    HmiMode_Interrupt_VICSEmergencyInterrupt,
    HmiMode_Interrupt_RDSTMCEmergencyInterrupt
};

int group_11[] = {
    HmiMode_Interrupt_DSRCInterrupt,    // InterruptMode #38
    HmiMode_Interrupt_TrafficInformationGuidance,    // InterruptMode #39
    HmiMode_Interrupt_VICSInterrupt,    // InterruptMode #40
    HmiMode_Interrupt_NAVNotification,    // InterruptMode #41
    HmiMode_Interrupt_EstimatedStopTimeNotification,    // InterruptMode #42
    HmiMode_Interrupt_ApplicationDeliveryInterrupt1,    // InterruptMode #43
    HmiMode_Interrupt_GBOOKTrafficInformationGuidance,    // InterruptMode #44
};

int group_12[] = {
    HmiMode_Interrupt_DSRCLongSentenceReadingOut,    // InterruptMode #45
    HmiMode_Interrupt_GBOOKGuidance,    // InterruptMode #46
    HmiMode_Interrupt_EuropeTelematicsInterrupt,    // InterruptMode #47
    HmiMode_Interrupt_MailReadingOut,    // InterruptMode #48
    HmiMode_Interrupt_ActionEntryReadingOut,    // InterruptMode #51
    HmiMode_Interrupt_AttentionPointGuidanceMddlePrioritySubScreen, // emo
    HmiMode_Interrupt_MapUpdateGuidance,
    HmiMode_Interrupt_MapDifferentialUpdate,
    HmiMode_Interrupt_StatusScreen,
    HmiMode_Interrupt_SystemNotification,    // InterruptMode #55
    HmiMode_Interrupt_MaintenanceGuidance,    // InterruptMode #56
    HmiMode_Interrupt_SoftwareUpdateNotification,    // InterruptMode #57
    HmiMode_Interrupt_RemoteServicesGuidance,    // InterruptMode #58
    HmiMode_Interrupt_RemoteServicesOperation,    // InterruptMode #59
    HmiMode_Interrupt_MailReceivingNotification,    // InterruptMode #60
    HmiMode_Interrupt_OperatorGuidacne,    // InterruptMode #61
    HmiMode_Interrupt_GraphicInformationProvision,    // InterruptMode #62
    HmiMode_Interrupt_MirrorlinkIPhoneAppcombinationInterruptVoice,
    HmiMode_Interrupt_ApplicationDeliveryInterrupt2,
    HmiMode_Interrupt_UIEGuidance,
    HmiMode_Interrupt_IntentionConfirmationScreen,
    HmiMode_Interrupt_AttentionPointGuidanceLowPriority,
    HmiMode_Interrupt_RecommendInfomationGuidanceLow,
    HmiMode_Interrupt_SmartphoneLink,
    HmiMode_Interrupt_SeamlessGuidance
};

#include <vector>
struct DataStruct {
    int id;
    int size;
    int *data;
};

const int DATA_SIZE = 13;
DataStruct testData[DATA_SIZE];
void createData(DataStruct *list, int id, int *array, int size)
{
    DataStruct temp;
    memset(&temp, 0, sizeof(temp));
    temp.id = id;
    temp.size = size;
    temp.data = array;
    list[id] = temp;
}
int main() {
    memset(testData, 0, sizeof(testData));
    createData(testData, 0, group_0, sizeof(group_0) / sizeof(int));
    createData(testData, 1, group_1, sizeof(group_1) / sizeof(int));
    createData(testData, 2, group_2, sizeof(group_2) / sizeof(int));
    createData(testData, 3, group_3, sizeof(group_3) / sizeof(int));
    createData(testData, 4, group_4, sizeof(group_4) / sizeof(int));
    createData(testData, 5, group_5, sizeof(group_5) / sizeof(int));
    createData(testData, 6, group_6, sizeof(group_6) / sizeof(int));
    createData(testData, 7, group_7, sizeof(group_7) / sizeof(int));
    createData(testData, 8, group_8, sizeof(group_8) / sizeof(int));
    createData(testData, 9, group_9, sizeof(group_9) / sizeof(int));
    createData(testData, 10, group_10, sizeof(group_10) / sizeof(int));
    createData(testData, 11, group_11, sizeof(group_11) / sizeof(int));
    createData(testData, 12, group_12, sizeof(group_12) / sizeof(int));

    int total = 0;
    for (int i = 0; i < DATA_SIZE; ++i) {
        total += testData[i].size;
        printf("%d: %d\n", i, testData[i].size);
    }
    printf("%d\n", total);

    return 0;
}